// 1.生成器函数返回一个生成器
// 2.生成器是特殊的迭代器
// 3.生成器函数通过yield控制函数流程

// next() 方法也接受一个参数用于修改生成器内部状态。
// 传递给 next() 的参数值会被 yield 接收。
// 要注意的是，传给第一个 next() 的值会被忽略

// return后面的也会被忽略，并且将return的值作为最后一个yield的value返回
function* foo(count) {
    console.log(count);

    console.log(111)
    const b = yield 222
    console.log(b)
    console.log(333)
    if (b) {
        yield 444;
    }
    
    return 999
    yield 555
}
const bar = foo(888)
console.log(bar.next());
console.log(bar.next(false));
console.log(bar.next());
console.log(bar.next());




